﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

public partial class DatosGenerales : System.Web.UI.Page
{
    
    //private static Candidato candto = new Candidato();
    private static bool modo = false;
    //private static string folio = "0";
    //private static string idc = "";
    //private static Usuario usr = new Usuario();
    private static AppSettingsReader settings = new AppSettingsReader();
    string cadena = (string)settings.GetValue("cadenaconexion", typeof(string));
    private static bool _hayImage = false;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (this.IsPostBack == false)
        {
            //folio = this.Request.QueryString["id"];
            HiddenField1.Value = this.Request.QueryString["id"];
            //idc = this.Request.QueryString["idc"];
            HiddenField2.Value = this.Request.QueryString["idc"];
            if (HiddenField1.Value == "0")
            {
                modo = true;
                LimpiaCajas();                
            }
            else
            {
                modo = false;
                MuestraDatos();                
            }
            txtUsuario.Enabled = modo;
            cargaCombo();
            muestraImagen();
        }
    }

    private void muestraImagen()
    {
        bdSQLServer bd = new bdSQLServer((string)settings.GetValue("cadenaconexion", typeof(string)));
        try
        {
            bd.bdConecta();
            string sql1 = "select idpersona from ImagenPersona where idpersona = '{0}'";
            sql1 = string.Format(sql1, HiddenField1.Value);
            DataSet dsImagen = bd.dataSetConsulta(sql1, "imagen");

            if (dsImagen.Tables[0].Rows.Count > 0)
            {
                _hayImage = true;
                Image1.ImageUrl = "~/ShowImage.ashx?id=" + HiddenField1.Value;
            }
            else
            {
                _hayImage = false;
            }
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message;
        }
        finally
        {
            bd.bdCierra();
        }


    }
    private void cargaCombo()
    {
        for (int i = 1900; i < DateTime.Now.Year; i++)
        {
            txtAnoNacimiento.Items.Add(i.ToString());             
        }

        for (int i = 1; i <= 31; i++)
        {
            txtDiaNacimiento.Items.Add(i.ToString());
        }
        
    }

    protected void btnCurriculum_Click(object sender, EventArgs e)
    {
        if (HiddenField1.Value == "0")
        {
            lblMensaje.Text = "Debe primero guardar candidato para capturar curriculum";
            return;
        }
        if (HiddenField2.Value == "0")
        {
            lblMensaje.Text = "Debe primero guardar candidato para capturar curriculum";
            return;
        }

        Response.Redirect("DatosCurriculum.aspx?id=" +
            HiddenField1.Value + "&idc="
            + HiddenField2.Value);
    }
    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        try
        {
            if(txtUsuario.Text.Trim() == string.Empty)
            {
                lblMensaje.Text = "El usuario es requerido!";
                return;
            }

            if (txtPassword.Text.Trim() == string.Empty)
            {
                lblMensaje.Text = "El password es requerido! (Máximo 8 caracteres)";
                return;
            }

            if (txtEmail.Text.Trim() == string.Empty)
            {
                lblMensaje.Text = "Sin correo eletrónico no se puede registrar el candidato";
                return;
            }

            Persona2 persna = new Persona2();
            persna = RecuperaDatos();

            Persona p = new Persona();
               
            p.nombre1 = persna.nombre1;
            p.nombre2 = persna.nombre2;
            p.apellido1 =  persna.nombre2;
            p.apellido1  = persna.apellido1;
            p.apellido2 =  persna.apellido2 ;
            p.calle = persna.calle;
            p.colonia = persna.colonia;
            p.municipio = persna.municipio;
            p.cp = persna.cp;
            p.telefono1 = persna.telefono1;
            p.telefono2 = persna.telefono2;
            p.celular1 = persna.celular1 ;
            p.celular2 = persna.celular2; 
            p.fechanacimiento= persna.fechanacimiento;
            p.ciudadnacimiento = persna.ciudadnacimiento;
            p.paisnacimiento = persna.paisnacimiento;                 
            p.comentarios = persna.comentarios;
            p.email = persna.email;
            p.estado = persna.estado;
            p.estadocivil = persna.estadocivil;
            p.ciudad = persna.ciudad;
            

            Candidato candto = new Candidato();
            candto.activo = persna.candactivo;
            candto.idpersona = HiddenField1.Value;
            candto.idcandidato = HiddenField2.Value;

            Usuario usr = new Usuario();
            usr.idusuario = HiddenField3.Value;
            usr.username = persna.usrUser;
            usr.password = persna.usrPass;
            
            if (modo == true)
            {
                if (LogInLogOut.ExisteUsuario(txtUsuario.Text.Trim()))
                {
                    lblMensaje.Text = "Usuario ya existe!!";
                    return;
                }
                
                DataSet ds = Candidatos.GuardaCandidato(candto, p,usr);
                string idpersona = ds.Tables[1].Rows[0]["idpersona"].ToString();
                string idcandidato = ds.Tables[1].Rows[0]["idcandidato"].ToString();
                Personas per = new Personas();
                //persna = per.GetPersona(idpersona);
                //candto = Candidatos.GetCandidato(idcandidato);
                per = null;
                modo = false;
                HiddenField1.Value = idpersona;
                HiddenField2.Value = idcandidato;
            }
            else
            {
                p.idpersona = HiddenField1.Value;
                Candidatos.ActualizaCandidato(candto, p,usr);
            }

            if (imgUpload.FileName.Trim() != string.Empty)
            {
                guardaImagenCurriculum();                
                Image1.ImageUrl = "~/ShowImage.ashx?id=" + HiddenField1.Value;
            }

            MuestraDatos();
            string strMensa = "Se actualizo sus datos en nuestro sistema su usuario y password son: ";
            strMensa += txtUsuario.Text.Trim() + " " + txtPassword.Text.Trim();
            Mail.EnviaCorreo(strMensa, "", txtEmail.Text.Trim());
            lblMensaje.Text = "Registro actualizado";
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message;
        }
    }

    public Persona2 RecuperaDatos()
    {
        Persona2 persna = new Persona2();
        try
        {
            persna.nombre1 = txtPrimerNombre.Text;
            persna.nombre2 = txtSegundoNombre.Text;
            persna.apellido1 = txtPaterno.Text;
            persna.apellido2 = txtMaterno.Text;
            persna.calle = txtCalle.Text;
            persna.colonia = txtColonia.Text;
            persna.municipio = txtMunicipio.Text;
            persna.cp = txtCodigoPostal.Text;
            persna.telefono1 = txtTelefono1.Text;
            persna.telefono2 = txtTelefono2.Text;
            persna.celular1 = txtCelular1.Text;
            persna.celular2 = txtCelular2.Text;
            string sFecha = txtAnoNacimiento.Text.Trim() + "-" +
                txtMesNacimiento.Text.Trim() + "-" + txtDiaNacimiento.Text.Trim();
            persna.fechanacimiento = DateTime.Parse(sFecha);
            //persna.fechanacimiento = (DateTime)dtFechaNacimiento.Value;
            persna.ciudadnacimiento = txtCiudadNacimiento.Text;
            persna.paisnacimiento = txtPais.Text;
            //persna.comentarios = Utilerias.ConvertRichTextBoxContentsToString(txtComentarios);
            persna.comentarios = txtComentarios.Text;
            persna.email = txtEmail.Text;
            persna.candactivo = "1";
            //candto.activo = "1";
            persna.usrUser = txtUsuario.Text.Trim();
            //usr.username = txtUsuario.Text.Trim();
            persna.usrPass = txtPassword.Text.Trim();
            //usr.password = txtPassword.Text.Trim();
            persna.ciudad = txtCiudad.Text.Trim();
            persna.estado = Estado.Text;
            persna.estadocivil = txtEstadoCivil.Text.Trim();

            
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message;
        }

        return persna;
    }

    public void LimpiaCajas()
    {
        try
        {            
            //persna = new Persona();
            //candto = new Candidato();
            //usr = new Usuario();
            //candto.idcandidato = string.Empty;
            //candto.idpersona = string.Empty;

            txtPrimerNombre.Text = string.Empty;
            txtSegundoNombre.Text = string.Empty;
            txtPaterno.Text = string.Empty;
            txtMaterno.Text = string.Empty;
            txtCalle.Text = string.Empty;
            txtColonia.Text = string.Empty;
            txtMunicipio.Text = string.Empty;
            txtCodigoPostal.Text = string.Empty;
            txtTelefono1.Text = string.Empty;
            txtTelefono2.Text = string.Empty;
            txtCelular1.Text = string.Empty;
            txtCelular2.Text = string.Empty;
            //dtFechaNacimiento.Value = DateTime.Now;            
            txtAnoNacimiento.Text = DateTime.Now.Year.ToString();
            txtMesNacimiento.Text = DateTime.Now.Month.ToString();
            txtDiaNacimiento.Text = DateTime.Now.Day.ToString();
            txtCiudadNacimiento.Text = string.Empty;
            txtPais.Text = string.Empty;
            txtComentarios.Text = string.Empty;
            txtUsuario.Text = string.Empty;
            txtPassword.Text = string.Empty;
            txtCiudad.Text = string.Empty;
            txtEstadoCivil.Text = string.Empty;
            
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message;
        }
    }

    public void MuestraDatos()
    {
        try
        {

            Personas personas = new Personas();
            Persona persona = personas.GetPersona(HiddenField1.Value);
            //persna = persona;

            
            //candto.idpersona = persona.idpersona;
            //candto.idcandidato = idc;

            txtPrimerNombre.Text = persona.nombre1.Trim();
            txtSegundoNombre.Text = persona.nombre2.Trim();
            txtPaterno.Text = persona.apellido1.Trim();
            txtMaterno.Text = persona.apellido2.Trim();
            txtCalle.Text = persona.calle.Trim();
            txtColonia.Text = persona.colonia.Trim();
            txtMunicipio.Text = persona.municipio.Trim();
            txtCodigoPostal.Text = persona.cp.Trim();
            txtTelefono1.Text = persona.telefono1.Trim();
            txtTelefono2.Text = persona.telefono2.Trim();
            txtCelular1.Text = persona.celular1.Trim();
            txtCelular2.Text = persona.celular2.Trim();
            txtAnoNacimiento.Text = persona.fechanacimiento.Year.ToString();
            txtMesNacimiento.Text = persona.fechanacimiento.Month.ToString();
            txtDiaNacimiento.Text = persona.fechanacimiento.Day.ToString();
            lblFecha.Text = persona.fechanacimiento.ToString("yyyy-MM-dd");
            txtCiudadNacimiento.Text = persona.ciudadnacimiento.Trim();
            txtPais.Text = persona.paisnacimiento.Trim();
            txtComentarios.Text = persona.comentarios.Trim();
            txtEmail.Text = persona.email.Trim();

            Usuario usr = new Usuario();
            usr = LogInLogOut.ObtenUsuario(persona.idpersona);
            HiddenField3.Value = usr.idusuario;
            txtUsuario.Text = usr.username.Trim();
            txtPassword.Text = usr.password.Trim();

            txtEstadoCivil.Text = persona.estadocivil;            
            txtCiudad.Text = persona.ciudad;
            Estado.Text = persona.estado;
            lblEstado.Text = persona.estado;


        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message;
        }
    }


    private void guardaImagenCurriculum()
    {
        SqlConnection connection = null;
        try
        {
            FileUpload img = (FileUpload)imgUpload;
            Byte[] imgByte = null;
            if (img.HasFile && img.PostedFile != null)
            {
                //To create a PostedFile
                HttpPostedFile File = imgUpload.PostedFile;
                //Create byte Array with file len
                imgByte = new Byte[File.ContentLength];
                //force the control to load data in array
                File.InputStream.Read(imgByte, 0, File.ContentLength);
            }
            // Insert the employee name and image into db

            connection = new SqlConnection(cadena);

            connection.Open();
            string sql = "";
            if (_hayImage)
                sql = "UPDATE ImagenPersona set imagen = @foto where idpersona = @idpersona";
            else
                sql = "INSERT INTO ImagenPersona (idpersona,imagen ) VALUES (@idpersona,@foto)";

            SqlCommand cmd = new SqlCommand(sql, connection);
            cmd.Parameters.AddWithValue("@idpersona", HiddenField1.Value);
            cmd.Parameters.AddWithValue("@foto", imgByte);
            int id = Convert.ToInt32(cmd.ExecuteScalar());

            _hayImage = true;

        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message;
        }
        finally
        {
            connection.Close();
        }
    }

}